fix(prose-tests): the asserter judges which of prose or walker was at fault#569
Open
leeovery wants to merge 2 commits into
Open
fix(prose-tests): the asserter judges which of prose or walker was at fault#569leeovery wants to merge 2 commits into
leeovery wants to merge 2 commits into
Conversation
… fault An epic walk came back FLAKY over a step the prose got right. The walker read confirm-trigger's route to Step 7, talked itself into Step 6 on the grounds that the file numbers it earlier, read the reference, ran one manifest read, then caught itself: "my own misreading of the routing, not a prose deviation." It corrected and finished correctly. Both runs landed the right world and passed every deterministic check. The asserter had that sentence in front of it and marked the step failed anyway, because its rules told it to. "Never explain a failure" was written against asserters that diagnosed causes and proposed fixes, and it over-reached: it also forbade deciding whether the prose or the walker went wrong. That attribution is not an explanation of a failure — it is what makes something a failure in the first place, and it is the one judgement only this agent can make. The deterministic checks already catch everything a script can; a reasoning model that is barred from reasoning is just a slower script. So the rules now say what they should have said. A path step fails when the prose failed. A walker that wandered off its own initiative and came back has shown nothing about the prose, and the step passes on the corrected path — quoting the correction, since a pass still needs its evidence. The record settles that a call was made and never why: a call made during an abandoned detour looks identical to one the prose asked for, and only the walk says which it was. The guards that made the original rule necessary all stay: no invented reading that rescues a step, no assuming an unrecorded action happened, no correct end state excusing a wrong path, and genuine ambiguity fails. Judgement is not generosity. The wander is still reported, under markers. One walker wandering is noise; the same wander recurring on the same step is prose that reads misleadingly however correct it is, and that only becomes visible if the wobbles are recorded rather than swallowed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Two rules the last run earned. Nothing is fixed during or after a run — prose, case, snapshot or harness — however small or obvious. Everything is surfaced and decided together. The reason is not caution for its own sake: on the run that prompted this, the first fix reached for was a prose change to correct prose, and the second was deleting a claim that was doing real work. The actual fault was a third thing, in the judging, and neither repair would have found it. A test that repairs what it finds also destroys the record of what it found. And a pass carrying notes is not a clean pass. Markers always warrant a look. A walker that wandered and corrected itself has not failed the prose, but the same wander recurring on the same step is prose that reads misleadingly however correct it is — visible only if every one is surfaced rather than shrugged off. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This was referenced Jul 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
An epic walk came back FLAKY over a step the prose got right.
The walker read confirm-trigger's route to Step 7, talked itself into Step 6 on the grounds that the file numbers it earlier, read the reference, ran one manifest read — then caught itself: "my own misreading of the routing, not a prose deviation." It corrected and finished correctly. Both runs landed the right world and passed every deterministic check.
The asserter had that sentence in front of it and marked the step failed anyway, because its rules told it to.
Never explain a failurewas written against asserters that diagnosed causes and proposed fixes — and it over-reached, also forbidding the decision of whether the prose or the walker went wrong. That attribution isn't an explanation of a failure; it's what makes something a failure in the first place, and it's the one judgement only this agent can make. The deterministic checks already catch everything a script can. A reasoning model barred from reasoning is just a slower script.So the rules now say what they should have:
Every guard that made the original rule necessary stays: no invented reading that rescues a step, no assuming an unrecorded action happened, no correct end state excusing a wrong path, genuine ambiguity fails. Judgement is not generosity.
The wander is still reported, under markers — one walker wandering is noise; the same wander recurring on the same step is prose that reads misleadingly however correct it is, and that's only visible if the wobbles are recorded rather than swallowed.
Second commit: a run reports, it never repairs
Two rules the same run earned, added to the
/prose-testskill:Follow-up surfaced, not actioned
Discovery's Step 5 is the only step in the corpus that loads a reference and carries no routing of its own. Siblings with the same shape all signpost at the loading step anyway —
workflow-discussion-processStep 6 (→ On return, proceed to **Step 7**) andworkflow-implementation-process(conditional→ Return to **Step 6**), both loading references that route back independently. Not a bug; the routing is complete if you read the reference. But it's the sole departure from a pattern the reader meets everywhere else. Left for a decision on whether a convention should cover it.Test plan
Requires a plugin reload to take effect, then a re-run of
discovery-commits-new-epicunchanged — claim 4 intact, so it's a real test: it should pass on the corrected path with the wander under markers, and still fail if the prose ever genuinely routes the epic arm into Step 6.🤖 Generated with Claude Code
Stack